/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package controleInterno.cgt;

import controleInterno.cdp.EmpresaCompradora;
import controleInterno.cdp.EmpresaFornecedora;
import java.util.List;
import util.Exceptions.InventivaException;
import util.Persistencia.DAOJPA;
import util.Persistencia.DAOFactory;
import util.Persistencia.IDAOJPA;

/**
 *
 * @author Gabriel
 */
public class AplCadastrarEmpresas {
    
    private IDAOJPA apDaoEmpresaCompradora = DAOFactory.getInstance().obterDAO(EmpresaCompradora.class);
    private IDAOJPA apDaoEmpresaFornecedora = DAOFactory.getInstance().obterDAO(EmpresaFornecedora.class);
    
    private static AplCadastrarEmpresas instance = null;
    
    private AplCadastrarEmpresas() {
    }

    /**
     * Obtém uma instância da aplicação. Implementação do padrão Singleton.
     */
    public static AplCadastrarEmpresas getInstance() {
        if (instance == null) {
            instance = new AplCadastrarEmpresas();
        }
        return instance;
    }
    
    public EmpresaCompradora incluirEmpresaCompradora(List<Object> args) throws InventivaException {
        EmpresaCompradora eComp = null;
        // validação
        if ((Integer) args.get(1) > 0) {
            // criação do objeto
            eComp = new EmpresaCompradora();
            eComp.setNomeGestor((String) args.get(0));
           // eComp.setDados((DadosEmpresa) args.get(1));
            
            // registro do objeto
            eComp = (EmpresaCompradora) apDaoEmpresaCompradora.Salvar(eComp);
        }
        return eComp;
    }
    
    public EmpresaCompradora alterarEmpresaCompradora(EmpresaCompradora empresaCompradora) throws InventivaException {
        return (EmpresaCompradora) apDaoEmpresaCompradora.Salvar(empresaCompradora);
    }
    
    public void apagarEmpresaCompradora(EmpresaCompradora empresaCompradora) throws Exception {
        apDaoEmpresaCompradora.Excluir(empresaCompradora);
    }

    public List<EmpresaCompradora> obterEmpresaCompradora() throws InventivaException {
        return (List<EmpresaCompradora>) apDaoEmpresaCompradora.Listar(EmpresaCompradora.class);
    }
    
    public EmpresaFornecedora incluirEmpresaFornecedora(List<Object> args) throws InventivaException {
        EmpresaFornecedora eforn = null;
        // validação
        if ((Integer) args.get(1) > 0) {
            // criação do objeto
            eforn = new EmpresaFornecedora();
            eforn.setNomeGestor((String) args.get(0));
         //   eforn.setDados((DadosEmpresa) args.get(1));
            
            // registro do objeto
            eforn = (EmpresaFornecedora) apDaoEmpresaFornecedora.Salvar(eforn);
        }
        return eforn;
    }
    
    public EmpresaFornecedora alterarEmpresaFornecedora(EmpresaFornecedora empresaFornecedora) throws InventivaException {
        return (EmpresaFornecedora) apDaoEmpresaFornecedora.Salvar(empresaFornecedora);
    }
    
    public void apagarEmpresaFornecedora(EmpresaFornecedora empresaFornecedora) throws Exception {
        apDaoEmpresaFornecedora.Excluir(empresaFornecedora);
    }

    public List<EmpresaFornecedora> obterEmpresaFornecedora() throws InventivaException {
        return (List<EmpresaFornecedora>) apDaoEmpresaFornecedora.Listar(EmpresaFornecedora.class);
    }
    
    
    
    
}
